library(readxl)
library(dplyr)
library(ggplot2)
library(tidyverse)
data_path <- "I:/data2/DMSP/DMSP2001-2019_table/DMSP2000-2020_total.xlsx"

excle_data <- read_excel(path = data_path, sheet = "Sheet1")

# head(excle_data)
# 
# str(excle_data)

#将Excle表格中的数据从宽格式转为长格式
#这个步骤是方便后续进行R语言分析
#除了PAC列，将其他数据堆叠起来
long_data <-excle_data %>%
  pivot_longer(
    cols = -PAC,
    names_to = "Year_Variable",
    values_to = "DMSP_Value"
  )

# head(long_data)
# str_extract() 从文本中提取匹配正则表达式的部分
# '\\d{4}' 是一个正则表达式，意思是“匹配连续的四个数字”
cleaned_data <- long_data %>%
  mutate(
    Year = as.numeric(str_extract(Year_Variable,"\\d{4}"))
  )

# head(cleaned_data)

#按PAC编码分组，然后对每个数据进行线性回归
# 1. lm(DMSP_Value ~ Year) 对每个组的数据进行线性回归
# 2. coef(...) 提取回归的系数（截距和斜率）
# 3. [2] 从系数中只选择第二个元素，也就是我们想要的斜率
result_df <- cleaned_data %>% 
  group_by(PAC) %>% 
  summarize(
    dmsp_slope = coef(lm(DMSP_Value ~ Year))[2]
  )

print(result_df)

write.csv(result_df, "I:/data2/DMSP/DMSP2001-2019_table/DMSP_slope_2000-2020.csv", row.names = FALSE)
